package demo9;

import java.util.Scanner;
public class Main1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = Integer.parseInt(sc.next());
            int m = Integer.parseInt(sc.next());

            StringBuilder sb = new StringBuilder("");
            for (int i = 0; i < n; i++) {
                sb.append(sc.next());
            }
            String str = sb.toString();
            System.out.println(str);
            int res = characterReplacement2(str,m);
            System.out.println(res);
        }
    }


    public static int characterReplacement(String s, int k) {
        int []map=new int[26];
        // 窗口内出现次数最多的字符的出现次数
        int maxCount=0;
        char []a=s.toCharArray();
        int left=0,right=0;
        int res=0;
        // right一直向右扩充
        for(right=0;right<a.length;right++){
            map[a[right]-'a']++;
            // 每扩充一格 就重新计算maxCount
            maxCount=Math.max(maxCount,map[a[right]-'a']);

            // 重复字符可以填满整个窗口,更新结果。
            if(right-left+1-maxCount<=k){
                res=Math.max(right-left+1,res);
            }
            // 窗口大小 减去 重复字符出现次数>k ，说明重复字符不能填满整个窗口
            else {
                map[a[left]-'a']--;
                left++;
            }
        }
        return res;
    }


    public static int characterReplacement2(String s, int k) {

        int len = s.length();
        //特点
        if(len == 0){
            return 0;
        }
        int left  = 0 ;
        int right = 0 ;
        int res = 0 ;
        int max_len = 0;
        //字母与频数记录，int[256]就不用减'A'或者减'a'了
        int[] map = new int[256];
        //单限制条件
        while(right < len ){

            //将char存在了map的(int)char的位置上，值为出现的频率
            map[s.charAt(right)]++;
            //全局包括历史上出现过的max_len 最大值
            max_len = Math.max(max_len,map[s.charAt(right)]);
            //窗口值做限制
            if(right - left + 1 > max_len + k){
                map[s.charAt(left)]--;
                left++;
            }

            //res为窗口出现的最大值和当前阶段窗口值比较
            res = Math.max(res,right - left + 1);
            right++;
        }


        return res;
    }




}
